package persistence.test.demoproxy;

import java.lang.reflect.Method;

import javassist.util.proxy.MethodHandler;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Intercepte les appels aux méthodes get d'une classe persistante<br/>
 * Pour le lazzy loading des propriétés OneToMany et ManyToOne
 * 
 * @author dga
 * 
 */
public class PersistentClassHandler implements MethodHandler {

	private static Log log = LogFactory.getLog(PersistentClassHandler.class);

	/*
	 * on peut ajouter en arguments des objets dont aurait besoin le proxy (la
	 * classe,, la session, ...)
	 */
	public PersistentClassHandler() {
	}

	public Object invoke(Object bean, Method method, Method proceed, Object[] args) throws Throwable {
		String methodName = method.getName();
		log.debug("Invoking " + methodName);
		/* Faire qqchose */
		return proceed.invoke(bean, args); // execute the original method.
	}

}
